package org.yelongframework.excel.cell;

import java.util.Objects;

import org.apache.poi.ss.usermodel.Cell;
import org.yelongframework.commons.lang.IntegerUtil;
import org.yelongframework.excel.row.ExcelRow;
import org.yelongframework.excel.sheet.ExcelSheet;
import org.yelongframework.excel.workbook.ExcelWorkbook;

/**
 * 抽象实现
 * 
 * @since 1.0.0
 */
public abstract class AbstractExcelCell implements ExcelCell {

	/** 行 */
	private final ExcelRow row;

	/** 单元格 */
	private final Cell cell;

	// ==================================================构造器==================================================

	/**
	 * @param row  行
	 * @param cell 单元格
	 */
	public AbstractExcelCell(ExcelRow row, Cell cell) {
		this.row = Objects.requireNonNull(row, "row");
		this.cell = Objects.requireNonNull(cell, "cell");
	}

	// ==================================================获取字符串值==================================================

	@Override
	public String getValueIntString() {
		Integer value = IntegerUtil.valueOfByStart(getValueString());
		return null == value ? null : value.toString();
	}

	@Override
	public String getValueIntStringIf() {
		Integer value = IntegerUtil.valueOfByStart(getValueString());
		return null == value ? getValueString() : value.toString();
	}

	// ==================================================所属的行==================================================

	@Override
	public ExcelRow getRow() {
		return row;
	}

	// ==================================================所属的工作表==================================================

	@Override
	public ExcelSheet getSheet() {
		return row.getSheet();
	}

	// ==================================================所属的工作薄==================================================

	@Override
	public ExcelWorkbook getWorkbook() {
		return getSheet().getWorkbook();
	}

	// ==================================================单元格==================================================

	@Override
	public Object getCell() {
		return cell;
	}

}
